﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;

namespace  RzCorportativo.Views.Cadastros
{
    public partial class Agenda : BasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if ("s".Equals(Session["op"]))
            {
                Alert alert = new Alert("erroGeral", this);
                alert.AlertType = AlertType.Success;
                alert.Add("sucess", "Item salvo com sucesso");
                alert.Show();
                Session.Remove("op");
            }
            if (this.IsPostBack)
                return;
            var especialidades = RzCorportativo.Lib.Especialidade.Listar(new RzCorportativo.Lib.Especialidade() { Status = true });
            especialidades.Insert(0, new RzCorportativo.Lib.Especialidade() { Descricao = "Selecione", EspecialidadeId = 0 });
            this.EspecialidadeId.DataSource = especialidades;
            this.EspecialidadeId.DataValueField = "EspecialidadeId";
            this.EspecialidadeId.DataTextField = "Descricao";
            this.DataBind();
            this.MedicoId.DataSource = new List<RzCorportativo.Lib.Medico>() { new RzCorportativo.Lib.Medico() { MedicoId = 0, Pessoa = new RzCorportativo.Lib.Usuario() { Nome = "Selecione" } } }.Select(s => new { MedicoId = s.MedicoId, Nome = s.Pessoa.Nome });
            this.MedicoId.DataTextField = "Nome";
            this.MedicoId.DataValueField = "MedicoId";
            this.MedicoId.DataBind();
        }

        [WebMethod]
        public static List<RzCorportativo.Lib.Agenda> Listar(string data, string horaInicio, string paciente, int especialidade, int medico )
        {
            DateTime dt = DateTime.MinValue;
            DateTime.TryParse(data, out dt);
            TimeSpan tm = TimeSpan.MinValue;
            if(!TimeSpan.TryParse(horaInicio, out tm))
                tm = TimeSpan.MinValue;
            var pacientes = string.IsNullOrEmpty(paciente) ? null : RzCorportativo.Lib.Usuario.Listar(new RzCorportativo.Lib.Usuario() { Nome = paciente }).FirstOrDefault();

            var agenda = new RzCorportativo.Lib.Agenda()
            {
                HoraInicio = tm,
                DataConsulta = dt,
                EspecialidadeId = (short)especialidade,
                MedicoId = medico,
                PacienteId = (pacientes ?? new RzCorportativo.Lib.Usuario()).UsuarioId
            };
            var lista = RzCorportativo.Lib.Agenda.GetAgenda(agenda, validaHoraInicio: tm != TimeSpan.MinValue).OrderBy(a => a.HoraInicio).ToList();
            return lista;
        }
    }
}